package com.guomei.service.curse;

import com.guomei.bean.curse.domain.UserCourseJoin;
import com.guomei.bean.curse.vo.UserCourseJoinVo;
import com.guomei.utils.PageData;

import java.util.List;

/**
 * 用户课程参与Service接口
 */
public interface UserCourseJoinService {

    /**
     * 根据用户ID和课程ID查询
     * @param userId 用户ID
     * @param courseId 课程ID
     * @return 用户课程参与记录
     */
    UserCourseJoin getByUserAndCourse(Long userId, Long courseId);

    /**
     * 根据用户ID查询所有课程学习记录
     * @param userId 用户ID
     * @return 用户课程参与记录列表
     */
    List<UserCourseJoin> listByUserId(Long userId);

    /**
     * 更新用户课程学习进度
     * 根据该用户在该课程下的所有视频学习记录，计算并更新课程整体进度
     * 
     * @param userId 用户ID
     * @param courseId 课程ID
     * @return 是否成功
     */
    boolean updateCourseProgress(Long userId, Long courseId);

    /**
     * 保存或更新记录
     * @param userCourseJoin 用户课程参与记录
     * @return 是否成功
     */
    boolean saveOrUpdate(UserCourseJoin userCourseJoin);
    
    /**
     * 分页查询用户课程学习记录（带课程信息）
     * @param userCourseJoin 查询条件
     * @return 分页数据
     */
    PageData<UserCourseJoinVo> selectPageWithCourse(UserCourseJoin userCourseJoin);
}

